package com.huaishushu.controller;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.huaishushu.common.R;
import com.huaishushu.entity.Category;
import com.huaishushu.entity.Employee;
import com.huaishushu.service.ICategoryService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.util.List;


/**
 * <p>
 * 菜品及套餐分类 前端控制器
 * </p>
 *
 * @author ChiBaoBaoHuaiShuShu
 * @since 2023-05-28
 */
@RestController
@RequestMapping("/category")
@Slf4j
public class CategoryController {

    @Autowired
    private ICategoryService categoryService;

    /**
     * 新增分类和套餐
     * @param category
     * @return
     */
    @PostMapping
    public R<String> save(@RequestBody Category category) {
        boolean flag = categoryService.save(category);
        log.info("新增是菜品还是套餐：{}，是否成功：{}",category.getType(),flag);
        if (flag) {
            return R.success("新增分类成功");
        }
        return R.error("新增分类失败");
    }

    /**
     * 分类信息的分页查询
     * @param page
     * @param pageSize
     * @return
     */
    @GetMapping("/page")
    public R<Page> page(Integer page, Integer pageSize) {
        Page<Category> pageInfo = categoryService.page(page, pageSize);
        log.info("分类信息分页查询");
        return R.success(pageInfo);
    }

    /**
     * 根据id来删除分类信息
     * 删除之前判断菜品是否绑定了分类，没绑定分类信息则删，绑定了的话不能删除
     * @param id
     * @return
     */
    @DeleteMapping
    public R<String> delete(Long id) {
        boolean flag = categoryService.delete(id);
        log.info("删除分类信息的id：{}，是否删除成功：{}",id,flag);
        if (flag) {
            return R.success("删除分类信息成功");
        }
        return R.error("删除分类信息失败！！！");
    }

    /**
     * 根据id修改分类信息
     * @param category
     * @return
     */
    @PutMapping
    public R<String> update(@RequestBody Category category) {
        log.info("修改分类信息：{}",category);
        boolean flag = categoryService.update(category);
        if (flag) {
            return R.success("修改分类信息成功");
        }
        return R.error("修改分类信息失败！！！");
    }

    /**
     * 根据条件来查询所有分类信息
     * @param category
     * @return
     */
    @GetMapping("list")
    public R<List<Category>> list(Category category) {
        List<Category> categoryList = categoryService.list(category);
        return R.success(categoryList);
    }




}






